/**
 * 
 * MODULE DE DESCRIPTION DU CUISINIER SPECIALISTE
 *-----------------------------------------------
 *
 * Presentation
 *   Le cuisinier spécialiste à pour tâche de préparer des plats en fonction
 *   de sa spécialité. Il collecte ses plats au cuisinier spécialiste. Il peut
 *   commander à un apprenti de lui apporter des ingrédients d'un repas. Le 
 *   
 *
 *   
 *
 *
 *
 *
 **/
:- module(specialiste,[
		
	]).

/**
 * I NOM DES SPECIALSITES
 *
 **/
    
    specialiste_entree(nom_specialiste_entree).
    specialiste_pp(nom_specialiste_plat_principaux).
    specialiste_dessert(nom_specialiste_dessert).
    
    
/**
 * II. LES ETATS DU CUISINIER SPECIALISTE
 *
 *
 *     SANS_TACHE - 
 *     ATTENTE_APPRENTI -
 *     ATTENTE_INGREDIENTS - 
 *     INGREDIENTS_COLLECTES - 
 *     ENTREE_PREPARE
 *     DESSERT_PREPARE
 *     PP_PREPARE - 
 *     
 **/    
    
    
 /** III - LES ACTIONS DES SERVEURS
   *
   * Les actions seront codées avec la syntaxe suivante :

   *    action(ACTION,CONDITION,A_SUPPRIMER,A_AJOUTER)
   *
   ****
   *    
   *    ACTION      :  action à executer
   *
   *    CONDITION   :  ensemble des conditions préalable à l'action.
   *
   *    A_SUPPRIMER :  ensembles etats,condition qui ne seront plus
   *                   valides après execution de l'environement.
   *
   *    A_AJOUTER   :  ensemble des nouvelles conditions valides après
   *                   execution de l'action.            
   *
  **/
 
  
   /**
    * II-1. ORDONNER_RECHERCHE_INGREDIENTS
    *
    *  Elle permet au cuisinier de collecter une tâche remise directement par l'aide du chef.
    *  
    *  CONDITIONS :
    * 
    *	en attente de l'apprenti ET apprenti présent.
    **/
     ordonner_recherche_ingredients().
     
     
     
     /**
     * II-2. PPREPARER_ENTREE
     *
     *  Elle permet de collecter les ingrédients relatifs à un plat à préparer
     *  et apportés par un apprenti. Elle est éffectuée après avoir donné un
     *  ordre correspondant à l'apprenti.
     *
     *  CONDITIONS :
     *    ingrédients entree collectés
     **/
     preparer_entree() 	   
  
      /**
     * II-3. PPREPARER_PP
     *
     *  Elle permet de collecter les ingrédients relatifs à un plat à préparer
     *  et apportés par un apprenti. Elle est éffectuée après avoir donné un
     *  ordre correspondant à l'apprenti.
     *
     *  CONDITIONS :
     *    ingrédients plat principaux collectés
     **/
     preparer_collectes().
     
     /**
     * II-4. PPREPARER_DESSERT
     *
     *  Elle permet de collecter les ingrédients relatifs à un plat à préparer
     *  et apportés par un apprenti. Elle est éffectuée après avoir donné un
     *  ordre correspondant à l'apprenti.
     *
     *  CONDITIONS :
     *    ingrédients dessert collectés
     **/
     preparer_dessert().
     
    /**
     * II-2. REMETTRE_ENTREE
     *
     *  Elle permet de collecter les ingrédients relatifs à un plat à préparer
     *  et apportés par un apprenti. Elle est éffectuée après avoir donné un
     *  ordre correspondant à l'apprenti.
     *
     *  CONDITIONS :
     *    entree preparee ET serveur present
     **/
     remettre_entree().
     
     
    /**
     * II-2. REMETTRE_PLAT_PRINCIPAL
     *
     *  Elle permet de collecter les ingrédients relatifs à un plat à préparer
     *  et apportés par un apprenti. Elle est éffectuée après avoir donné un
     *  ordre correspondant à l'apprenti.
     *
     *  CONDITIONS :
     *    plat pricnipal preparee ET serveur present
     **/
     remettre_plat_principal().
     
    /**
     * II-3. REMETTRE_DESSERT
     *
     *  Elle permet de collecter les ingrédients relatifs à un plat à préparer
     *  et apportés par un apprenti. Elle est éffectuée après avoir donné un
     *  ordre correspondant à l'apprenti.
     *
     *  CONDITIONS :
     *    dessert preparee ET serveur present.
     **/
     remettre_dessert().        
     
     
            